// Token存储的key
const TOKEN_KEY = 'user_token'
const USER_INFO_KEY = 'user_info'

/**
 * 获取token
 */
export const getToken = () => {
  try {
    return uni.getStorageSync(TOKEN_KEY) || ''
  } catch (error) {
    console.error('获取token失败:', error)
    return ''
  }
}

/**
 * 设置token
 */
export const setToken = (token) => {
  try {
    console.log('[auth.js] 准备存储token:', token)
    uni.setStorageSync(TOKEN_KEY, token)
    // 立即验证存储是否成功
    const storedToken = uni.getStorageSync(TOKEN_KEY)
    console.log('[auth.js] 存储后立即读取到的token:', storedToken)
    if (!storedToken) {
      console.error('[auth.js] 警告: Token存储后未能立即读取，请检查存储环境！')
    }
  } catch (error) {
    console.error('设置token失败:', error)
  }
}

/**
 * 删除token
 */
export const removeToken = () => {
  try {
    uni.removeStorageSync(TOKEN_KEY)
  } catch (error) {
    console.error('删除token失败:', error)
  }
}

/**
 * 获取用户信息
 */
export const getUserInfo = () => {
  try {
    const userInfo = uni.getStorageSync(USER_INFO_KEY)
    return userInfo ? JSON.parse(userInfo) : null
  } catch (error) {
    console.error('获取用户信息失败:', error)
    return null
  }
}

/**
 * 设置用户信息
 */
export const setUserInfo = (userInfo) => {
  try {
    uni.setStorageSync(USER_INFO_KEY, JSON.stringify(userInfo))
  } catch (error) {
    console.error('设置用户信息失败:', error)
  }
}

/**
 * 删除用户信息
 */
export const removeUserInfo = () => {
  try {
    uni.removeStorageSync(USER_INFO_KEY)
  } catch (error) {
    console.error('删除用户信息失败:', error)
  }
}

/**
 * 清除所有用户相关数据
 */
export const clearUserData = () => {
  removeToken()
  removeUserInfo()
}

/**
 * 检查是否已登录
 */
export const isLoggedIn = () => {
  const token = getToken()
  return !!token
}

/**
 * 检查token是否过期
 */
export const isTokenExpired = (token) => {
  if (!token) return true
  
  try {
    // 如果token是JWT格式，可以解析并检查过期时间
    const payload = JSON.parse(atob(token.split('.')[1]))
    const currentTime = Date.now() / 1000
    
    return payload.exp < currentTime
  } catch (error) {
    // 如果不是JWT格式或解析失败，认为token有效
    return false
  }
}

export default {
  getToken,
  setToken,
  removeToken,
  getUserInfo,
  setUserInfo,
  removeUserInfo,
  clearUserData,
  isLoggedIn,
  isTokenExpired
} 